<?php
/**
 * Created by PhpStorm.
 * User: lyx
 * Date: 16/8/18
 * Time: 下午5:00
 */
namespace App\Api\Helper;

use App\Models\Api\User;
use App\Models\cms\TAdminPassword;
use App\Models\cms\TUserAdminPassword;
use App\Models\cms\TUsersPassword;
use Illuminate\Support\Facades\Redis;

/**
 * 推送短信文案编辑处
 *
 * Class SmsContent
 * @package App\Api\Helper
 */
class SmsContent
{

	/**
	 * @param $phone
	 * @param string $client
	 * @return \Dingo\Api\Http\Response
	 * @name 发送短信给新的注册用户
	 * @user IHammer
	 * @info
	 * 	 $client App/Cocloud/Operation
	 */
    public static function sendSMS_newUser($phone,$client='APP')
    {
		//如果是测试账号不需要发送
		if(_TEST_AUTH==='jump'){
			return ReturnMessage::success();
		}
			$code = rand(1000,9999);
			$ret = self::sendSMS($phone,$code);
			if ($ret['code'] != 200) {
				return ReturnMessage::success('发送验证码失败','1004');
			}
		 	 //三端不同处理
			switch($client){
				case 'App':
					$res = TUsersPassword::class;
					break;
				case 'Cocloud':
					$res = TUserAdminPassword::class;
					break;
				case 'Operation':
					$res = TAdminPassword::class;
					break;
				case 'Only':
					$res = TUsersPassword::class;
					break;
				default:
					return ReturnMessage::success('发送验证码失败','1004');
			}

			//添加缓存 以手机号为键 验证码为值 缓存2分钟
			Redis::setex($phone,120,$code);
		    if($client=='Only'){
				return ReturnMessage::success('发送成功',1000);
			}
			$res::where('phone', $phone)->update([
				'verify_code' => $code,
				'password' => bcrypt($code),
			]);
		return ReturnMessage::successToAppInfo('发送成功',1000);
    }

	/**
	 * @param $phone
	 * @param $code
	 * @return mixed
	 * @name 发送短信验证码
	 * @user IHammer
	 */
	public static function sendSMS($phone,$code,$type = 'validate'){
		if(!in_array($type,['validate','notice','marketing'])){
			return false;
		}
		if($type=='notice'){
			$businessId = '5dd1bae961de4638ad05d6df06d3cde7';
			$templateId = '10070';//模板
			$logName = '通知';
		}elseif($type=='marketing'){
			$businessId = 'e5c349ca51f444a99e7258543314819b';
			$templateId = '10070';//模板
			$logName = '营销';
		}else{
			$businessId = '7dcba5c0322a427297f00ade359564ca';
			$templateId = '10070';//模板
			$logName = '验证码';
		}
		$sms = new YiDunSMS($businessId);
		$result = $sms->sendSms($templateId,$phone,$code);
		/**
		 * 返回结果和记录：
		 */
		if ($result['code'] != 200) {
			\Log::info($logName, ['context' => json_encode($result)]);
		}
		return $result;
	}

    /**
     * 发送短信并记录日志
     *
     * @param $phone
     * @param $txt
     * @param $logName
     * @return bool
     */
//    public static function sendSms($phone, $txt, $logName)
//    {
//        $sms = new Sms();
//        $result = $sms->sendSMS($phone, $txt);
//        $result = $sms->execResult($result);
//
//        if ($result[1] == 0) {
//            return true;
//        } else {
//            Log::info($logName, ['context' => json_encode($result)]);
//            return false;
//        }
//    }


	/**
	 * 发送短信并记录日志
	 *
	 * @param $templateId //网易云信的模板ID，默认是验证码模板ID
	 * @param $phoneArr //发送手机号的数组
	 * @param $codeArr //验证码数组
	 * @param $logName
	 * @return bool
	 */
	public static function sendSms1($templateId = '3077018', $phoneArr, $codeArr, $logName)
	{
		/**
		 * 网易云信的APP配置信息：
		 */
		/*$AppKey = 'd2a873c6205e8508972708e662546f9e';
		$AppSecret = '52bc8b80e18b';*/
		$AppKey = '7d31661a940e240395373f250658daa4';
		$AppSecret = 'd889347e73ae';

		/**
		 * 模板号：
		 * 3077018 ：【企课网】您的验证码为：%s。
		 */

		/**
		 * 调用发送实例：
		 */
		$sms = new YunXinSMS($AppKey, $AppSecret);
		$result = $sms->sendSMSTemplate($templateId, $phoneArr, $codeArr);

		/**
		 * 返回结果和记录：//TODO 还未确定返回参数细节
		 */
		if ($result[1] == 0) {
			return true;
		} else {
			\Log::info($logName, ['context' => json_encode($result)]);
			return false;
		}
	}

	/**
	 * 发送短信验证码并记录日志
	 *
	 * @param $phone
	 * @param string $logName
	 * @return array|bool
	 */
	public static function sendVerifyCode($phone, $logName = '验证码')
	{
		/**
		 * 网易云信的APP配置信息：
		 */
		$AppKey = 'd2a873c6205e8508972708e662546f9e'; //旧的
		$AppSecret = 'bdcfefb0bbd2';

		//$AppKey = '7d31661a940e240395373f250658daa4';
		//$AppSecret = 'd889347e73ae';

		/**
		 * 模板号：
		 * 3077018 ：【企课网】您的验证码为：%s。
		 */
		$templateId = '3077018';
		/**
		 * 调用发送实例：
		 */
		$sms = new YunXinSMS($AppKey, $AppSecret);
		$result = $sms->sendSmsCode($templateId, $phone);

		/**
		 * 返回结果和记录：
		 */
		if ($result['code'] != 200) {
			\Log::info($logName, ['context' => json_encode($result)]);
		}

		return $result;
	}

	/**
	 * 发送短信 添加缓存
	 * @param $phone
	 * @return mixed
	 */
	public static function homeSendSMS($phone)
	{
		$ret = self::sendVerifyCode($phone);

		if ($ret['code'] == 200) {
			//添加缓存 以手机号为键 验证码为值 缓存2分钟
			Redis::setex($phone,120,$ret['obj']);
			return ReturnMessage::success();
		} else {
			return ReturnMessage::success('发送验证码失败','1004');
		}
	}
}
